<?php
namespace App\Traits;
use Carbon\Carbon;

/**
 * 日期时间处理 Trait
 *
 * @author WangBin
 * @date 2021-09-29
 */
trait DateTimeTrait
{
    /**
     * 获取时间区间的状态描述：未开始、进行中、已结束
     *
     * @param string $startTime
     * @param string $endTime
     * @return array $status
     */
    protected function getTimeRangeStatus(string $startTime, string $endTime)
    {
        $status = ['value' => '0', 'name' => '已结束'];
        $startTime = strtotime($startTime);
        $endTime = strtotime($endTime);
        $currTime = time();
        if($startTime <= $currTime && $currTime <= $endTime) {
            $status['name'] = '进行中';
            $status['value'] = 1;
        } else if($startTime > $currTime) {
            $status['name'] = '未开始';
            $status['value'] = 2;
        }
        return $status;
    }

    /**
     * 检查当前时间是否在区间内
     * 是：返回 true 否：返回 false
     *
     * @param string $startTime
     * @param string $endTime
     * @return bool
     */
    protected function check(string $startTime, string $endTime)
    {
        $startTime = strtotime($startTime);
        $endTime = strtotime($endTime);
        $currTime = time();
        return ($startTime <= $currTime && $currTime <= $endTime) ?? false;
    }

    /**
     * 获取当前日期时间
     *
     * @param string $format
     * @return string
     */
    public function getCurrDateTime(string $format = 'Y-m-d H:i:s')
    {
        return Carbon::now()->format($format);
    }

    /**
     * 格式化给定的时间
     *
     * @param string $datetimeStr
     * @param string $format
     * @return string
     */
    public function formatDateTime(string $datetimeStr, string $format = 'Y-m-d H:i:s')
    {
        return Carbon::create($datetimeStr)->format($format);
    }

    /**
     * 获取当前时间戳
     *
     * @return int
     */
    public function getCurrTimeStamp(){
        return Carbon::now()->getTimestamp();
    }
}
